package com.uade.xml;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import com.uade.model.Entrega;

public class EntregaHandler extends DefaultHandler {

	private static Logger log = Logger.getLogger(EntregaHandler.class);
	// List to hold Entregas object
	private List<Entrega> entregaList = null;
	private Entrega entrega = null;

	// getter method for entrega list
	public List<Entrega> getEntregaList() {
		return entregaList;
	}

	boolean bcodigo = false;
	boolean bestado = false;
	String scodigo = null;
	String sestado = null;

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		if (qName.equalsIgnoreCase("Entrega")) {
			if (entregaList == null)
				entregaList = new ArrayList<Entrega>();
		}
		if (qName.equalsIgnoreCase("CODIGO"))
			bcodigo = true;
		if (qName.equalsIgnoreCase("ESTADO"))
			bestado = true;
	}

	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if (qName.equalsIgnoreCase("Entrega")) {
			int codigo = -1;
			boolean validado=true;
			if(sestado==null){
				validado=false;
			}else{
				if(scodigo!=null){
					try{
						codigo=Integer.valueOf(scodigo);
					}catch(Exception ex){
						validado=false;
						log.error("Al articulo "+ scodigo + " le faltan campos obligatorios");
					}
				}else{
					validado=false;
					log.error("Al articulo recibido le faltan campos obligatorios");
				}
			}
			if(validado){
				entrega = new Entrega();
				entrega.setCodigo(codigo);
				entrega.setEstado(sestado);
			}
			entregaList.add(entrega);
		}
	}

	@Override
	public void characters(char ch[], int start, int length)
			throws SAXException {

		if (bcodigo) {
			bcodigo = false;
			scodigo = new String(ch, start, length);
			log.debug("Codigo : " + scodigo);
		}
		if (bestado) {
			bestado = false;
			sestado = new String(ch, start, length);
			log.debug("Codigo deposito : " + sestado);
		}
	}	
}